import { Base64 } from 'js-base64'

// src/utils/request.js
const BASE_URL = '/api'; // 你的API基础地址


const buildQueryString = (params) => {
  return Object.keys(params)
    .map(key => `${key}=${encodeURIComponent(params[key])}`)
    .join('&');
};

const request = (options) => {
  // 处理param参数
  if (options.param) {
    const queryString = buildQueryString(options.param);
    options.url = `${options.url}?${queryString}`;
    delete options.param; // 删除param，避免重复处理
  }

  // 请求拦截器
  const token = uni.getStorageSync('token');
  if (token) {
    options.header = {
      ...options.header,
      'Blade-Auth': `bearer ${token}`,
    };
  }

  options.url = BASE_URL + options.url;
  options.header = {
    'Content-Type': 'application/json',
    ...options.header,
  };
  if(options.isAuth){
    options.header['Authorization'] = `Basic ${Base64.encode(`saber:saber_secret`)}`

  }


  return new Promise((resolve, reject) => {
    uni.request({
      ...options,
      success: (res) => {
        // 响应拦截器
        if (res.statusCode === 200) {

            resolve(res.data); // 返回业务数据
     
          
        } else {
          // 处理 HTTP 错误
          uni.showToast({
            title: `请求失败，状态码：${res.statusCode}`,
            icon: 'none',
          });
          reject(res);
        }
      },
      fail: (err) => {
        // 处理网络错误
        uni.showToast({
          title: '网络请求失败，请检查网络连接',
          icon: 'none',
        });
        reject(err);
      },
    });
  });
};

export default request;